﻿using System;
using System.Collections.Generic; 

namespace NTTDATA.BEENChina.ResultCertification.Checker.Date
{
    class DateEntryResultComparer : IComparer<string>
    {
        /// <summary>
        /// 2组日期值比较
        /// 比较方法 按照/分割 日期字符串的各项内容 逐项对比
        ///         年月日 分别比较 比较之前，日期项目已经转换成 年号/年/月/日
        ///         比较过程中 如果 2个比较对象 其中一个为空 则按照 相等处理
        ///         比如 4/25/6/14/     //6/12/
        ///         第二组年号/年 都没有  默认为和第一组日期中对应项目一样 
        ///         即 //6/12/  ->  4/25/6/12/  
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public int Compare(string x, string y)
        {
            string[] arrayX = x.Split(new string[] { @"/" }, StringSplitOptions.None);
            string[] arrayY = y.Split(new string[] { @"/" }, StringSplitOptions.None);


            int comparResult = 0;
            int a, b;
            string x1, y1;
            for (int i = 0; i < arrayX.Length; i++)
            {
                x1 = arrayX[i];
                y1 = arrayY[i];
                
                x1= changeTT(x1);
                y1 = changeTT(y1);

                if (!String.IsNullOrEmpty(x1) && String.IsNullOrEmpty(y1))
                {
                    y1 = x1;
                }
                else if (String.IsNullOrEmpty(x1) && !String.IsNullOrEmpty(y1))
                {
                    x1 = y1;
                }

               

                int.TryParse(x1, out a);
                int.TryParse(y1, out b);

                comparResult = intCompare(a, b);

                if (comparResult != 0)
                {
                    break;
                }
            }

           // System.Console.WriteLine(string.Format("x:{0}y:{1}:{2}",x,y,comparResult));
            
        

            return comparResult;

            
        }

        private int intCompare(int i1, int i2)
        {
            return i1 - i2;
        }

        private string changeTT(string str)
        {
            str = str.Replace("午前", "1");
            str= str.Replace("午後", "2");

            return str;
        }
    }
}
